#learning ggplot2 to visualize data 
library(ggplot2)
## Warning: package 'ggplot2' was built under R version 4.0.3
library(plotly)
## 
## Attaching package: 'plotly'
## The following object is masked from 'package:ggplot2':
## 
##     last_plot
## The following object is masked from 'package:stats':
## 
##     filter
## The following object is masked from 'package:graphics':
## 
##     layout
library(tidyverse)
## -- Attaching packages --------------------------------------- tidyverse 1.3.0 --
## v tibble  3.0.4     v dplyr   1.0.2
## v tidyr   1.1.2     v stringr 1.4.0
## v readr   1.4.0     v forcats 0.5.0
## v purrr   0.3.4
## Warning: package 'tibble' was built under R version 4.0.3
## Warning: package 'tidyr' was built under R version 4.0.3
## Warning: package 'readr' was built under R version 4.0.3
## Warning: package 'forcats' was built under R version 4.0.3
## -- Conflicts ------------------------------------------ tidyverse_conflicts() --
## x dplyr::filter() masks plotly::filter(), stats::filter()
## x dplyr::lag()    masks stats::lag()
library(dplyr)
library(gridExtra)
## 
## Attaching package: 'gridExtra'
## The following object is masked from 'package:dplyr':
## 
##     combine
## PERSIAPKAN DATANYA DULU DIBERSIHKAN DAN DIRAPIKAN

#Importing data 
internetdata <- read.csv("datainternet.csv", stringsAsFactors = FALSE)
#View data
View(internetdata)

#buang obs yang gak perlu (nama dan email)
internetdata <- internetdata %>%
  select(-c("Nama", "Email")) %>%
  as.data.frame()

internetdata <- internetdata%>%
  select(-("Asal")) %>%
  as.data.frame()

#Beberapa data dijadikan nominal 
data_nominal <- (c("Sex", "Fakultas", "Pendidikan", "Device", "WiFi", 
                   "Koneksi", "Alasan", "MedSos", "Lembur", "Layanan",
                   "Situs", "Waktu", "Tempat"))
internetdata[data_nominal] <- lapply(internetdata[data_nominal], function(x){factor(x)})

#Obs Durasi dijadikan ordinal aja biar bisa dianalisis 
internetdata$Durasi <- factor(internetdata$Durasi,
                              ordered = T,
                              levels = c("1- 3 Jam",
                                         "4 - 7 Jam",
                                         "> 7 Jam")) 

internetdata <- as_tibble(internetdata)

#cek dulu
glimpse(internetdata)
## Rows: 446
## Columns: 20
## $ Sex        <fct> Laki-laki, Laki-laki, Laki-laki, Laki-laki, Perempuan, L...
## $ Usia       <int> 19, 19, 18, 19, 19, 18, 18, 18, 18, 18, 18, 18, 20, 17, ...
## $ Fakultas   <fct> FITK, FITK, FITK, FITK, FITK, FITK, FITK, FITK, FITK, FI...
## $ Pendidikan <fct> MA, MA, SMA, Pondok Pesantren, MA, SMA, MA, Pondok Pesan...
## $ Durasi     <ord> > 7 Jam, 4 - 7 Jam, 4 - 7 Jam, > 7 Jam, 4 - 7 Jam, 4 - 7...
## $ Device     <fct> Smart Phone, Smart Phone, Smart Phone, Smart Phone, Smar...
## $ WiFi       <fct> Ada dong!, Ada dong!, Ada dong!, Ada dong!, Ada dong!, A...
## $ Koneksi    <fct> Paket Data, Paket Data, WiFi, Paket Data, WiFi, Paket Da...
## $ Alasan     <fct> Bersosialisasi, Bersosialisasi, Mengisi waktu luang, Ter...
## $ MedSos     <fct> WhatsApp, WhatsApp, Instagram, WhatsApp, WhatsApp, Insta...
## $ Lembur     <fct> Iya, Iya, Iya, Tidak, Tidak, Tidak, Tidak, Iya, Iya, Iya...
## $ Layanan    <fct> Browsing, Chatting, Media Sosial, Nonton vidio, Media So...
## $ Situs      <fct> "Gramedia", "Facebook.com", "Seni ", "Wikipedia", "Berit...
## $ Waktu      <fct> Menunggu sesuatu (contoh : menunggu dosen), Menjelang ti...
## $ Tempat     <fct> Kamar, Kamar, Kamar, Kalau lagi boring, Kamar, Dimanapun...
## $ IA         <int> 21, 40, 86, 18, 13, 23, 36, 2, 54, 40, 47, 29, 54, 20, 3...
## $ Depresi    <int> 14, 18, 19, 2, 2, 0, 41, 1, 0, 0, 9, 4, 10, 36, 4, 8, 8,...
## $ Anxiety    <int> 14, 17, 29, 8, 3, 2, 35, 2, 7, 7, 15, 5, 13, 42, 8, 16, ...
## $ Stress     <int> 14, 21, 35, 7, 1, 0, 40, 0, 3, 1, 18, 9, 14, 42, 5, 18, ...
## $ Addicted   <chr> "Nonaddic", "Addicted", "Addicted", "Nonaddic", "Nonaddi...
## SAATNYA VISUALISASI 

# Demografi responden kita 
jeniskelamin <- internetdata %>% 
  ggplot(aes(x = Sex, fill = Sex)) +
  geom_bar() +
  theme(legend.position = "none", title = element_text(size = 10))

jeniskelamin

fakultas <- internetdata %>%
  ggplot(aes(x = Fakultas, fill = Fakultas)) +
  geom_bar() +
  theme(legend.position = "none", title = element_text(size = 10))

#atau langsung digabung jadi satu chart aja 
sex_fac <- internetdata %>%
  ggplot(aes(x = Fakultas, fill = Sex)) +
  geom_bar(alpha = 3/5) +
  theme(title = element_text(size = 10))

sex_fac  

#dijadikan interaktif bisa? bisa dong bosq~ 
library(plotly)
ggplotly(sex_fac)
#di-Facet Wrap juga bisa? Bisa 
konek_sex_fac <- internetdata %>% 
  ggplot(aes(x = Koneksi, fill = Sex)) +
  theme_bw() +
  facet_wrap(~ Fakultas) +
  geom_bar(alpha = 3/5) +
  labs(title = "Karakteristik Responden Survey", 
       subtitle = "Dipecah dari Fakultas, menurut Jenis Kelamin, dan Koneksi.",
       y = "Frekuensi",
       X = "Fakultas") 

#Persentase 
#Berapa banyak persentase responden yang masuk kategori adiksi dan tidak 
internetdata %>%
  ggplot(aes(x = Addicted,
             y = ..count.. / sum(..count..),
             fill = Addicted)) +
  geom_bar(alpha = 3/5) +
  labs(title = "Persentase Kategori Adiksi",
       y = "Persen",
       x = "Kategori") +
  scale_y_continuous(labels = scales::percent)

#Angka persentase tepatnya 
prop.table(table(internetdata$Addicted)) 
## 
##  Addicted  Nonaddic 
## 0.4529148 0.5470852
##hasilnya: Addicted  Nonaddic 
##          0.4529148 0.5470852


#persentase responden adiksi perfakultas bagaimana? 
facet_fac_addi <- internetdata %>%
  ggplot(aes(x = Addicted, 
             y = ..count.. / sum(..count..),
             fill = Sex)) +
  theme_bw() +
  facet_wrap(~ Fakultas) +
  geom_bar(alpha = 3/5) + 
  labs(title = "Persentase Adiksi per Fakultas",
       x = "Kategori", 
       y = "Frekuensi") +
  scale_y_continuous(labels = scales::percent)

ggplotly(facet_fac_addi)
## Warning: `group_by_()` is deprecated as of dplyr 0.7.0.
## Please use `group_by()` instead.
## See vignette('programming') for more help
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_warnings()` to see where this warning was generated.
#Dibalik juga bisa (maksudnya, pake kategori adiksi tapi isinya fakultas )
internetdata %>%
  ggplot(aes(Addicted, fill = Fakultas)) +
  geom_bar(alpha = 3/5, position = "identity") +
  labs(y = "Responden Survey",
       x = "Kategori",
       title =  "Frekuensi Responden Kecanduan Internet")

#Bagaimana kategori adiksi dari segi koneksi?
ggplot(internetdata, aes(x = Koneksi, fill = Sex)) +
  theme_bw() + 
  facet_wrap(~ Addicted) +
  geom_bar(alpha = 4/5) + 
  labs(y = "Jumlah Responden", 
       title = "Kategori 'Adiksi' dan 'Tidak' Dipecah dari Koneksi",
       subtitle = "frekuensi jenis Kelamin dalam kategori addicted dan nonaddicted berdasarkan koneksi yang digunakan")

internetdata %>%
  ggplot(aes(x = Koneksi, fill = Koneksi)) +
  theme_bw() +
  geom_bar() +
  labs(y = "Jumlah Subjek", 
           title = "Frekuensi Addicted and Non-addicted by Koneksi") +
  theme(legend.position = "none")